const InitADObserver = require('bindings')('AD-Observer');
const EventEmitter = require('events').EventEmitter;


const moniter = new EventEmitter();

moniter.on('change', (data) => {
    // 对应变化为 增加 与 修改
    // 也可能是实体转移
    // 直接同步该 实体
    process.send({
        data
    })
});

class ADObserver {
    adObserver;
    monitor;
    constructor(arg) {
        this.initConfig = JSON.parse(arg)
        this.adObserver = InitADObserver(this.initConfig);
    }

    open() {
        this.adObserver.open(() => { })
    }

    bind() {
        this.adObserver.bind(() => { })
    }
    initMonitor(monitor) {
        this.monitor = monitor
    }
    startMonitor() {
        this.adObserver.startMonitor(this.monitor.emit.bind(this.monitor))
    }
}


const adObserver = new ADObserver(process.argv[2])



adObserver.open()

adObserver.bind()

adObserver.initMonitor(moniter)

adObserver.startMonitor()


// while (true) {
//     process.on('message', (action) => {
//         switch(action) {
//             case 'open':
//                 adObserver.open()
//             case 'bind':
//                 adObserver.bind()
//             case 'initMonitor':
//                 adObserver.initMonitor()
//             case 'startMonitor':
//                 adObserver.startMonitor()
//         }
//     })
// }
